package ru.ifmo.cppsc.lexer.token;

/**
 * Ennumerates toke types
 */
public enum TokenType {
    TLeftCurly("TLeftCurly"),
    TRightCurly("TRightCurly"),
    TLeftParen("TLeftPAren"),
    TRightParen("TRightParen"),
    TLeftBracket("TLeftBracket"),
    TRightBracket("TRightBracket"),
    TMinus("TMinus"),
    TPlus("TPlus"),
    TMultiply("TMultiply"),
    TDivide("TDivide"),
    TModulo("TModulo"),
    TComma("TComma"),
    TSemiColon("TSemiColon"),
    TAssign("TAssign"),
    TEqual("TEqual"),
    TNotEqual("TNotEqual"),
    TLessThen("TLessThan"),
    TLessEqual("TLessEqual"),
    TGreaterThen("TGreaterThan"),
    TGreaterEqual("TGreaterEqual"),
    TDot("TDot"),
    TArrow("TArrow"),
    TWhile("TWhile"),
    TDo("TDo"),
    TIf("TIf"),
    TThen("TThen"),
    TElse("TElse"),
    TColon("TColon"),
    TLogicalNot("TLogicalNot"),
    TLogicalOr("TLogicalOr"),
    TLogicalAnd("TLogicalAnd"),
    TGoto("TGoto"),
    TFalse("TFalse"),
    TTrue("TTrue"),
    TVoid("TVoid"),
    TInt("TInt"),
    TDouble("TDouble"),
    TBool("TBool"),
    TOperator("TOperator"),
    TNew("TNew"),
    TIntegerLiteral("TIntegerLiteral"),
    TDoubleLiteral("TDoubleLiteral"),
    TStringLiteral("TStringLiteral"),
    TIdentifier("TIdentifier"),
    TStruct("TStruct"),
    TUserType("TUserType"),
    TUndefined("TUndefined"),
    TVarDef("TVarDef"),
    TReturn("TRerurn");

    TokenType(String name) {
        this.name = name;
    }

    private final String name;

    public String getName() {
        return name;
    }
}
